package com.sondon.dev_info.controller;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.sondon.dev_info.entity.DevInfo;
import com.sondon.dev_info.service.TemplateManager;
import com.sondon.dev_soceket.business.QueryVersion;
import com.sondon.dev_soceket.business.SoftwareDown;
import com.sondon.dev_soceket.netty.DeviceTCPServerHandler;

/**
 * @Project : Dev_Info_Web
 * @Package : com.sondon.dev_info.controller
 * @Class : Dev_Info.java
 * @Company 广州讯动网络科技有限公司
 * @Author : 蔡文锋
 * @DateTime：2015年4月24日 下午1:39:58
 * @Blog：http://blog.csdn.net/caiwenfeng_for_23
 * @Description : {}
 */

@Controller
public class Dev_InfoController {
	private static Dev_InfoController dev_infoController;
	@Resource
	public TemplateManager<DevInfo> templateManager;
	
	/**
	 * @param templateManager
	 * the templateManager to set
	 */
	public void setTemplateManager(TemplateManager<DevInfo> templateManager) {
		this.templateManager = templateManager;
	}
	
	
	/**
	* @Author 蔡文锋
	* @Data_Time 2015年4月25日  上午1:20:05
	* @Description {构造方法执行后调用 init()}
	 */
	@PostConstruct
	public void init() {
//		  System.out.println("I'm  init  method  using  @PostConstrut....");  
		dev_infoController = this;
		dev_infoController.templateManager = this.templateManager;
	}
	
	/**
	* @Author 蔡文锋
	* @Data_Time 2015年4月25日  上午1:20:15
	* @Description { servlet销毁前调用dostory()}
	 */
	@PreDestroy
    public void  dostory(){  
//        System.out.println("I'm  destory method  using  @PreDestroy.....");  
//        DeviceTCPServer.StopDevSocket();
    }
	
	/**
	* @Author 蔡文锋
	* @Data_Time 2015年4月25日  下午3:16:42
	* @Description {添加设备信息到数据库}
	 * @param devinfo
	 */
	public static void Add_DevInfo(DevInfo devinfo) {
			dev_infoController.templateManager.add(devinfo);		
	}
	
	/**
	 * 
	 * @Author 蔡文锋
	 * @Data_Time  2015年4月28日 上午11:07:46
	 * @Description {查询是否存在设备信息}
	 * @param dev_sn
	 * @return
	 */
	public static DevInfo have_devinfo(String dev_sn){
		String hql="from "+DevInfo.class.getName()+" t where t.Dev_SN='"+dev_sn+"'";
//		System.out.println("Add_DevInfo  hql :"+hql);
		DevInfo have_devinfo=dev_infoController.templateManager.get_by_hql(hql);
		return have_devinfo;
	}
	
	/**
	 * @Author 蔡文锋
	 * @Data_Time  2015年4月27日 下午5:12:28
	 * @Description {更新设备信息}
	 * @param devinfo
	 */
	public static void Update_DevInfo(DevInfo devinfo){
		dev_infoController.templateManager.update(devinfo);
	}
	
	/**
	 * 
	 * @Author 蔡文锋
	 * @Data_Time  2015年4月28日 上午11:09:13
	 * @Description {保存或更新设备信息}
	 * @param devinfo
	 */
	public static void SaveOrUpdate(DevInfo devinfo){
		dev_infoController.templateManager.save_update(devinfo);
	}
	
	/**
	 * @Author 蔡文锋
	 * @Data_Time  2015年4月28日 下午2:35:20
	 * @Description {index}
	 * @return
	 */
	@RequestMapping("/devinfos")
	public String index(){
		return "devinfos";
	}
	
	/**
	 * @Author 蔡文锋
	 * @Data_Time  2015年4月28日 下午2:34:41
	 * @Description {获取所有设备信息}
	 * @return
	 */
	@RequestMapping(value="/get_all_devinfo",method=RequestMethod.GET)
	@ResponseBody
	public List<DevInfo> get_all_devinfo(){
		return templateManager.getAll(DevInfo.class);
	}
	
	/**
	 * @Author 蔡文锋
	 * @Data_Time  2015年4月28日 下午2:34:20
	 * @Description {测试发送消息到设备}
	 * @return
	 */
	@RequestMapping(value="/sendmsg",method=RequestMethod.GET)
	@ResponseBody
	public String SendMsg(){
		DeviceTCPServerHandler.SendMsgToOne("3030303030303030303030300000000000000000000000000000000000000000", SoftwareDown.GetMsg(""));
		return "send msg success !";
	}
}
